package ar.edu.utn.frba.disenio.aterrizar.fechas;

public class Norteamericano extends Formato {
	
	/////////////// FORMATO MM-DD-YYYY //////////////////
	
	@Override
	protected Fecha parsear(String unString){
		
		Fecha unaFecha = new Fecha();
		
		char caracEsp = '-';
		
		if (!unString.isEmpty() && unString.length()==10 && (unString.charAt(2)== caracEsp && unString.charAt(5)== caracEsp)){
			
			int dia= 0 ;
			int mes = 0;
			int anio = 0;
			
			//////// PARSEO EL MES ///////
			
			String mes_aux = unString.substring(0, 2).replaceAll(" ","");
			
			if(!mes_aux.isEmpty() && mes_aux.length()==2){
				try{
					mes = Integer.parseInt(mes_aux);
				}
				catch(Exception NumberFormatException){
					throw new ParserErrorNumeroNoValidoException("Los caracteres a convertir no son numeros");
				}
							
			}else{
				throw new ParserErrorNumeroNoValidoException("No pudo sacar el mes");
			}

			//////// PARSEO EL DIA ///////
			
			String dia_aux = unString.substring(3, 5).replaceAll(" ","");
			
			if(!dia_aux.isEmpty() && dia_aux.length()==2){
				
				try{
					dia = Integer.parseInt(dia_aux);
				}
				catch(Exception NumberFormatException){
					throw new ParserErrorNumeroNoValidoException("Los caracteres a convertir no son numeros");
				}				
			}else{
				throw new ParserErrorNumeroNoValidoException("No pudo sacar el dia");
			}

			//////// PARSEO EL AÑO ///////
			
			String anio_aux = unString.substring(6, 10).replaceAll(" ","");
			
			if(!anio_aux.isEmpty() && anio_aux.length()==4){
				try{
					anio = Integer.parseInt(anio_aux);	
				}
				catch(Exception NumberFormatException){
					throw new ParserErrorNumeroNoValidoException("Los caracteres a convertir no son numeros");
				}
			}else{
				throw new ParserErrorNumeroNoValidoException("No pudo sacar el año");
			}

			System.out.println("Parseo la fecha con Norteamericano");
			unaFecha.setearFecha(dia, mes, anio);
			return unaFecha;
			
		}else{
			throw new NoEsParseablePorFormatoException();
		}
	}
}